Network devices, such as switches or routers, may be used not only to route and/or switch data packets to their destinations, but may also be used to collect information and perform actions on received and/or transmitted data packets. Existing network devices commonly store databases associated with packet processing functions in recursive data structures that must be accessed by a packet forwarding engine in order to determine the action(s) to be performed on a data packet. Access to recursive data structures is iterative and the address of a read transaction depends on the data of the previous read transaction. While processing a packet, the packet forwarding engine typically issues a series of memory read operations to an external memory in which the data structures are stored. The packet forwarding engine has to wait for the data for each read transaction to be returned from the external memory before it can construct the address of the next read transaction to access the next iteration of the data structure or the final set of data that determines the action(s) that need to be performed on that particular packet. In such implementations, multiple memory accesses to external memory devices associated with tracking recursive data structures can add significant amount of latency for each packet to propagate through the network device.